The USB bus standard is an easy-to-use universal interface for the Personal Computer (PC) that has gained widespread acceptance. From the user perspective, the benefits of USB include universal plug-and-play and relative ease-of-use. When a USB peripheral is plugged-in to a USB port on a PC, the system auto-detects and auto-configures the USB devices. In most cases, user intervention is not required. This is a significant improvement over prior technology where a user had to open the PC to install a component. The USB interface also eliminates the need for multiple I/O standards, thereby simplifying PC connectivity for the consumer as well as simplifying manufacturing for the PC Original Equipment Manufacturers (OEMs).
The original USB specification has evolved over time to meet the needs of the industry, resulting in two versions available today. The USB interface is described as version 1.1 “Universal Serial Bus Revision 1.1 specification” and version 2.0 “Universal Serial Bus Revision 2.0 specification”, both documents are available at the USB website ‘http://www.usb.org/developers/docs/’.
The first USB specification, version 1.1, focused on making computing easy for everyone, and has been very successful in achieving this goal. The first USB interface is well suited to simple PC peripherals such as mice, keyboards, joysticks, and the occasional mass storage device. However, the bandwidth of USB 1.1 is insufficient for some applications. With a top speed of 12 Million bits/second (Mbps), system performance can become sluggish if multiple multimedia devices were attached to the same USB port.
To address this problem, the USB specification was updated to version 2.0 to improve the performance and usability of PC peripherals, opening the door to a world of high-performance/high-bandwidth applications such as mass storage, digital video, and broadband access. A further advantage is that all of these applications and many others can run simultaneously. The speed of USB 2.0 has been increased to 480 Mbits/second, a 40× improvement over USB 1.1.
Both versions of the USB specification define standardized transceiver functions used for sending data across the USB interface. Both specifications also require a bus interface between the USB transceiver and other elements of the USB device, such as the host or peripheral logic. The conventional high-speed USB transceiver bus interface is described by the universal transceiver macro-cell interface (UTMI), document “USB 2.0 Transceiver Macrocell Interface (UTMI) Specification Version 1.05, Mar. 29, 2001.”
A conventional embodiment of a USB 2.0 hub 12 is shown in FIG. 1. The USB hub logic 18 is coupled to a UTMI transceiver 20A on an upstream end and coupled to multiple UTMI transceivers 20B-E on a downstream end. The upstream transceiver 20A is coupled to a UBS B type upstream receptacle 24A and the downstream transceivers 20B-E are coupled to four USB A type receptacles 24B-E, respectively. A downstream port power management circuit 22 is coupled between the hub logic 18 and the A receptacles 24B-24E.
All the UTMI transceivers 20A-20E are substantially the same. The upstream transceiver 20A is a standard USB transceiver block configured to operate as an upstream (peripheral) USB port, and the four downstream transceivers 20B-20E are standard USB transceiver blocks configured to operate as downstream (hub/host) ports. The transceivers 20A-20E provide a physical layer interface between USB signaling on USB interfaces 9A and 9B and logic signaling used inside the hub logic 18. For example, the transceivers 20A-20E may provide an interface between the D− and D+USB signals on interfaces 9A and 9B and 8 or 16 bit buses 26 connected to the hub logic 18.
The conventional USB hub 12 as defined in the USB specification only allows a single host 10A to connect to multiple USB peripherals 28. It does not allow a single peripheral 28 or a group of peripherals 28 to be shared between multiple hosts 10A and 10B. To enable multiple hosts 10A and 10B to connect to one or more peripherals 28, analog switches 11 are coupled between the hosts 10A and 10B and the USB hub 12.
In recent years, arrays of servers have to a large extent replaced mainframes and minicomputers in large data processing applications. The growth of the internet has also largely been powered by the availability of relatively inexpensive servers grouped together in “farms” to store and enable access to stored web pages.
Arrays of servers typically take one of three forms. The simplest form is a number of server computers networked together each with its own monitor, keyboard, mouse, etc. More commonly, server farms are implemented either as a number of servers networked together in racks or as “blade servers” where a number of single-board computers (blades) are connected together using a backplane.
With the advent of USB 2.0 and the associated high speed data rates, server vendors and independent manufacturers of “keyboard/video/mouse (KVM) switches” have seen an opportunity to also add removable storage devices such as CD-ROMs to the mice and keyboard that they wish to share between multiple servers.
However, the current solutions developed to switch or share low speed USB devices between multiple hosts, such as the switches 11 shown in FIG. 1, do not work with high speed USB. One reason is that the analog switches 11 create discontinuities in the normally controlled USB connection 9 causing reflections in the USB signaling. These signal reflections prevent data transmissions at USB 2.0 transmission rates. The analog switches 11 also have to be manually switched and add extra expense and configuration time to the USB network.
It would be desirable to have a device that allows high-speed USB devices to be shared between multiple USB hosts.